///////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
#ifndef __SHADER_MANAGER_H__
#define __SHADER_MANAGER_H__

//-----------------------------------------------------------------------------

#include <Config.h>
#include <AbstractManager.h>
#include <vector>
#include <string>

class	GPUProgram;
class	TiXmlElement;

//-----------------------------------------------------------------------------

class ShaderManager
	: public AbstractManager<ShaderManager>
{
private:
	void									ReleaseShaders();

	std::vector<GPUProgram*>				m_shaders;

public:
											ShaderManager();
	virtual									~ShaderManager();

	void									ParseElement(TiXmlElement* elem);

	void									AddShader(GPUProgram* shader);

	GPUProgram*								GetShader(std::string filename);
};

#endif //__SHADER_MANAGER_H__
//-----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
